package com.zcah.sensitive.infofound;



import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;


import java.beans.Transient;
import java.io.IOException;
import java.io.Serializable;
import java.io.SerializablePermission;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

//@Component
//public class InfoFound implements Serializable {
//
//    @Autowired
//    @Qualifier("sparkContext")
//    private transient JavaSparkContext jsc;
//
//    public Map<String,Integer> getSensitiveInfo(String filePath) throws IOException{
//        JavaRDD<String> distFile = jsc.textFile(filePath);
//        JavaRDD<Map<String, Integer>> info = distFile.map(new Function<String, Map<String,Integer>>() {
//            @Override
//            public Map<String,Integer> call(String s) throws Exception {
//                return infoMatch(s);
//            }
//        });
//        Map<String, Integer> infoMap = info.reduce(new Function2<Map<String, Integer>, Map<String, Integer>, Map<String, Integer>>() {
//            @Override
//            public Map<String, Integer> call(Map<String, Integer> map, Map<String, Integer> map2) throws Exception {
//                Map<String, Integer> result = new HashMap<>();
//                for (Map.Entry<String, Integer> each : map.entrySet()) {
//                    Integer c = each.getValue() + map2.get(each.getKey());
//                    result.put(each.getKey(), c);
//                }
//                return result;
//            }
//        });
//        return infoMap;
//
////        infoMap.put("id", 34);
////        infoMap.put("email", 56);
////        infoMap.put("phone", 35);
//        //return infoMap;
//    }
//
//    private static Map<String, Integer> infoMatch(String sentence) {
//        Map<String, Integer> result = new HashMap<>();
//        Map<String, String> regex = new HashMap<>();
//        regex.put("emailRegex","(\\w+(\\.\\w)*@\\w+(\\.\\w{2,3}){1,3})");
//        regex.put("phoneRegex","(1[34578]\\d{9})");
//        regex.put("idRegex","((\\d{6})(19|20)(\\d{2})(1[0-2]|0[1-9])(0[1-9]|[1-2][0-9]|3[0-1])(\\d{3})(\\d|X|x)?)");
//        for(Map.Entry<String, String> each:regex.entrySet()){
//            Integer count = 0;
//            Pattern pattern = Pattern.compile(each.getValue());
//            Matcher matcher = pattern.matcher(sentence);
//            while (matcher.find()){
//                count += matcher.groupCount();
//            }
//            count = count/matcher.groupCount();
//            result.put(each.getKey().substring(0,each.getKey().indexOf("R")),count);
//        }
//        return result;
//    }
//
//}
